import { ApplyModule } from "@/services/modules/apply"

// 获取 URL 参数的工具方法
export function getUrlParam(paramName: string): string | null {
  const queryParams = new URLSearchParams(window.location.hash.split('?')[1])
  return queryParams.get(paramName)
}

// 示例：时间戳转日期
export function formatTimestamp(timestamp: number) {
  const date = new Date(timestamp)
  // 提取年月日时分秒
  const year = date.getFullYear()
  const month = String(date.getMonth() + 1).padStart(2, '0') // 月份从0开始，需要加1
  const day = String(date.getDate()).padStart(2, '0')
  const hours = String(date.getHours()).padStart(2, '0')
  const minutes = String(date.getMinutes()).padStart(2, '0')
  const seconds = String(date.getSeconds()).padStart(2, '0')

  // 拼接成所需格式
  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
}

const addDay = 0;

// 判断是否逾期
export function isOverdue(task: ApplyModule.TaskVo) {
  const currentDate = new Date()
  // 增加指定的天数
  currentDate.setDate(currentDate.getDate() + addDay);
  // 将当前日期设置为当天的 00:00:00
  currentDate.setHours(0, 0, 0, 0);

  const endDate = new Date(task.periodEndDate)
  // 将结束日期设置为当天的 00:00:00
  endDate.setHours(0, 0, 0, 0);

  return (task.status === 'UNPAID' || task.status === 'OVERDUE') && currentDate > endDate
}

// 计算逾期费用
export function calculateOverdueAmount(task: ApplyModule.TaskVo){
  if (!isOverdue(task)) return 0
  const currentDate = new Date()
  // 增加指定的天数
  currentDate.setDate(currentDate.getDate() + addDay);
  // 将当前日期设置为当天的 00:00:00
  currentDate.setHours(0, 0, 0, 0);

  const endDate = new Date(task.periodEndDate)
  // 将结束日期设置为当天的 00:00:00
  endDate.setHours(0, 0, 0, 0);

  const oneDay = 24 * 60 * 60 * 1000 // 一天的毫秒数
  const diffDays = Math.floor((currentDate.getTime() - endDate.getTime()) / oneDay)
  const dailyFee = 100
  const maxFee = 700
  return Math.min(diffDays * dailyFee, maxFee)
}

export const formatISOTime = (row: any, column: any, cellValue: string) => {
  const date = new Date(cellValue);
  const options: Intl.DateTimeFormatOptions = {
    year: 'numeric',
    month: '2-digit',
    day: '2-digit',
    hour: '2-digit',
    minute: '2-digit',
    second: '2-digit'
  };
  return new Intl.DateTimeFormat('zh-CN', options).format(date);
};

export const formatISOTimeByValue = (cellValue: string) => {
  const date = new Date(cellValue);
  const options: Intl.DateTimeFormatOptions = {
    year: 'numeric',
    month: '2-digit',
    day: '2-digit',
    hour: '2-digit',
    minute: '2-digit',
    second: '2-digit'
  };
  return new Intl.DateTimeFormat('zh-CN', options).format(date);
};

/**
 * 判断当前时间是否在指定的开始和结束时间之间
 * @param start 活动开始时间的时间戳（毫秒）
 * @param end 活动结束时间的时间戳（毫秒）
 * @returns 如果当前时间在范围内，返回 true；否则返回 false
 */
export function isEventActive(start: number, end: number) {
  // 获取当前时间的时间戳（毫秒）
  const currentTime = Date.now()

  // 判断当前时间是否在开始和结束时间之间
  return currentTime >= start && currentTime <= end
}